package com.monkeyboy.sort;

/**
 * 调整数组顺序使奇数位于偶数前面
 * [1,2,3,4]----> [1,3,2,4]
 * 解题思路：
 * 第一种方式：
 * 就是用一个新的数组，第一次循环一遍只添加奇数，然后循环第二遍添加偶数
 * 第二种方式：
 * 记录下标奇数的位置，然后往后面循环，如果再次循环到奇数的时候如果和最开始的奇数不同那么之间就是偶数，这时候就把奇数移到前面
 * 之间的偶数就全部后移一位
 * <p>
 * 第三种方式：
 * 最简单粗暴的方式，就是循环放入到不同的ArrayList中
 *
 * @Author Gavin
 * @date 2021.04.08 11:07
 */
public class Sort01 {

    public static int[] solution(int[] array) {
        if (array.length == 0) {
            return array;
        }
        int j = 0;//记录已经是奇数的位置
        int temp = 0;
        for (int i = 0; i < array.length; i++) {
            temp = array[i];
            if ((array[i] & 1) == 0) {
                continue;
            } else {
                int k = i;
                while (k > j) {
                    array[k] = array[k - 1];//这区间整体向后移动一位
                    k--;
                }
                array[k] = temp;
                j++;
            }
        }
        return array;
    }

    public static void main(String[] args) {
        int[] nums = {2, 3, 4, 5, 6, 7, 1};
        solution(nums);
        for (int pre : nums) {
            System.out.print(pre + " ");
        }
    }
}
